package com.risen.project.excel.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.util.ConverterUtils;
import com.risen.project.excel.handler.DefaultExcelHeadCheckHandler;

import java.util.Map;

/**
 * 读取表头监听器 泛型可以不传 有代码洁癖的话 就传个 Object 即可
 * @param <T>
 */
public class ReadHeadListener<T> extends AbstractReadListener<T> {

    /**
     * 表头信息集合
     */
    private Map<Integer, String> headMapInfo;

    @Override
    public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
        // 将表头信息转换为map集合 key是index value是表头信息 如果某列有空值 也会被统计到map里面
        this.headMapInfo = ConverterUtils.convertToStringMap(headMap, context);
        super.invokeHead(headMap, context);
    }

    @Override
    public void invoke(T data, AnalysisContext context) {
        // 这里不会执行了 因为下面已经返回了false
    }

    @Override
    public boolean hasNext(AnalysisContext analysisContext) {
        return false;
    }

    public Map<Integer, String> getHeadMapInfo() {
        return headMapInfo;
    }

    public ReadHeadListener(Class<T> tClass) {
        super.setCheckHandler(new DefaultExcelHeadCheckHandler());
        super.settClass(tClass);
    }
}
